// 存储验证码的Map对象，结构: { email: { code: '1234', timestamp: Date.now() } }
const codeStore = new Map();

// 验证码有效时间（毫秒）- 3分钟
const CODE_VALIDITY_PERIOD = 3 * 60 * 1000;

/**
 * 保存验证码
 * @param {string} email 用户邮箱
 * @param {string} code 验证码
 */
const saveCode = (email, code) => {
  codeStore.set(email, {
    code,
    timestamp: Date.now()
  });
  console.log(`已保存验证码: ${email} - ${code}`);
};

/**
 * 验证验证码
 * @param {string} email 用户邮箱
 * @param {string} code 用户输入的验证码
 * @returns {boolean} 验证结果
 */
const verifyCode = (email, code) => {
  const storedData = codeStore.get(email);
  
  // 检查是否存在该邮箱的验证码
  if (!storedData) {
    console.log(`验证失败: 未找到邮箱 ${email} 的验证码`);
    return false;
  }
  
  // 检查验证码是否过期
  const now = Date.now();
  if (now - storedData.timestamp > CODE_VALIDITY_PERIOD) {
    console.log(`验证失败: 邮箱 ${email} 的验证码已过期`);
    // 删除过期的验证码
    codeStore.delete(email);
    return false;
  }
  
  // 检查验证码是否匹配
  if (storedData.code !== code) {
    console.log(`验证失败: 邮箱 ${email} 的验证码不匹配`);
    return false;
  }
  
  // 验证成功后删除验证码（一次性使用）
  console.log(`验证成功: 邮箱 ${email} 的验证码验证通过`);
  codeStore.delete(email);
  return true;
};

module.exports = {
  saveCode,
  verifyCode
}; 